console.log(`
【fs 模块概述】
    Node.js 的文件系统模块 (fs) 允许我们与文件系统进行交互，
    提供了大量用于文件和目录操作的方法。这些方法通常有同步和异步两种版本。
`);

console.log(`
【重命名及移动 Api】
    1. fs.rename()             异步重命名及移动
    2. fs.renameSync()         同步重命名及移动
`);

console.log(
  `使用文件写入Api前，需要先导入fs模块：
   导入模块、require 是 Node.js 环境中的'全局'变量，用来导入模块
   const fs = require("fs");
  `
);
const fs = require("fs");

console.log(`
【同步重命名及移动】fs.renameSync()
    语法：
        fs.renameSync(oldPath, newPath)
    参数：
        oldPath：文件旧路径
        newPath：文件的新路径
    返回值：
        无
    异常：
        如果 oldPath 不存在，会抛出异常
        如果 newPath 已存在，会覆盖旧文件
    注意：
        1. 同步方法没有回调函数，所以不会有错误处理。
        2. 同步方法会阻塞代码执行，所以不建议在主线程中使用。
        3. 同步方法可以使用 try-catch 捕获异常。
        4. 同步方法可以使用 return 语句返回值。
        5. 同步方法可以使用 throw 语句抛出异常。
        6. 同步方法可以使用 try-catch 捕获异常。
`);
try {
  fs.renameSync("./111.txt", "./222.txt");
} catch (err) {
  console.log(err);
}

console.log(`
【异步重命名及移动】fs.rename()
    语法：
        fs.rename(oldPath, newPath, callback)
    参数：
        oldPath：文件旧路径
        newPath：文件的新路径
        callback：回调函数
    返回值：
        无
    异常：
        如果 oldPath 不存在，会抛出异常
        如果 newPath 已存在，会覆盖旧文件
    注意：
        1. 异步方法有回调函数，所以需要处理错误。
        2. 异步方法不会阻塞代码执行，所以建议在主线程中使用。
        3. 异步方法可以使用 try-catch 捕获异常。
        4. 异步方法可以使用 return 语句返回值。
        5. 异步方法可以使用 throw 语句抛出异常。
        6. 异步方法可以使用 try-catch 捕获异常。
`);
try {
  fs.rename("./222.txt", "./1112.txt", (err) => {
    if (err) {
      console.log(err);
      return;
    }
    console.log("重命名成功！！！");
  });
} catch (err) {
  console.log(err);
}
